package model

import (
	"manager/model/entity"
)

// ControlCreateRequest 创建现场数据
type ControlCreateRequest struct {
	FrameCode string `json:"frame_code"`

	FirmwareId int64 `json:"firmware_id"`

	FirmwareVersion string `json:"firmware_version"`

	SnCode string `json:"sn_code"`

	Mac string `json:"mac"`

	Imei string `json:"imei"`

	Iccid string `json:"iccid"`

	Imsi string `json:"imsi"`

	UpdatedAt int64 `json:"updated_at"`
}

// ControlUpdateRequest 更新现场数据
type ControlUpdateRequest struct {
	Id int64 `json:"id"`

	FrameCode *string `json:"frame_code"`

	FirmwareId *int64 `json:"firmware_id"`

	FirmwareVersion *string `json:"firmware_version"`

	SnCode *string `json:"sn_code"`

	Mac *string `json:"mac"`

	Imei *string `json:"imei"`

	Iccid *string `json:"iccid"`

	Imsi *string `json:"imsi"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// ControlListRequest 列表现场数据
type ControlListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	FrameCode *string `json:"frame_code"`

	FirmwareId *int64 `json:"firmware_id"`

	FirmwareVersion *string `json:"firmware_version"`

	SnCode *string `json:"sn_code"`

	Mac *string `json:"mac"`

	Imei *string `json:"imei"`

	Iccid *string `json:"iccid"`

	Imsi *string `json:"imsi"`

	UpdatedAt *int64 `json:"updated_at"`
}

// ControlListResponse 列表回包数据
type ControlListResponse struct {
	Total int            `json:"total"`
	List  []*ControlInfo `json:"list"`
}

// ControlInfoRequest 列表现场数据
type ControlInfoRequest struct {
	Id int64 `json:"id"`

	FrameCode *string `json:"frame_code"`

	FirmwareId *int64 `json:"firmware_id"`

	FirmwareVersion *string `json:"firmware_version"`

	SnCode *string `json:"sn_code"`

	Mac *string `json:"mac"`

	Imei *string `json:"imei"`

	Iccid *string `json:"iccid"`

	Imsi *string `json:"imsi"`

	UpdatedAt *int64 `json:"updated_at"`
}

// ControlInfo 详细数据
type ControlInfo struct {
	Id int64 `json:"id"`

	FrameCode string `json:"frame_code"`

	FirmwareId int64 `json:"firmware_id"`

	FirmwareVersion string `json:"firmware_version"`

	SnCode string `json:"sn_code"`

	Mac string `json:"mac"`

	Imei string `json:"imei"`

	Iccid string `json:"iccid"`

	Imsi string `json:"imsi"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// ControlDeleteRequest 删除现场数据
type ControlDeleteRequest struct {
	Id int64 `json:"id"`
}

// ControlsEntityToDto entity数据转换
func ControlsEntityToDto(controls []*entity.Control) []*ControlInfo {
	out := make([]*ControlInfo, 0, len(controls))
	for _, c := range controls {
		out = append(out, ControlEntityToDto(c))
	}
	return out
}

// ControlEntityToDto entity数据转换
func ControlEntityToDto(e *entity.Control) *ControlInfo {
	return &ControlInfo{

		Id: e.Id,

		FrameCode: e.FrameCode,

		FirmwareId: e.FirmwareId,

		FirmwareVersion: e.FirmwareVersion,

		SnCode: e.SnCode,

		Mac: e.Mac,

		Imei: e.Imei,

		Iccid: e.Iccid,

		Imsi: e.Imsi,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
